﻿using System.Collections.Generic;
using System.Web.Mvc;

namespace OperationPlugins.Mvc
{
    /// <summary>
    /// Provides information about an action method.
    /// </summary>
    public class ActionMethodInfo
    {
        /// <summary>
        /// Gets the current action method moment.
        /// </summary>
        public virtual ActionMethodMoment CurrentMoment { get; set; }

        /// <summary>
        /// Gets the action method parameters.
        /// </summary>
        public virtual IDictionary<string, object> ActionParameters { get; set; }

        /// <summary>
        /// Gets the ActionExecutingContext or null if not yet available.
        /// </summary>
        public virtual ActionExecutingContext ActionExecutingContext { get; set; }

        /// <summary>
        /// Gets the ActionExecutedContext or null if not yet available.
        /// </summary>
        public virtual ActionExecutedContext ActionExecutedContext { get; set; }

        /// <summary>
        /// Gets the ResultExecutingContext or null if not yet available.
        /// </summary>
        public virtual ResultExecutingContext ResultExecutingContext { get; set; }

        /// <summary>
        /// Gets the ResultExecutedContext or null if not yet available.
        /// </summary>
        public virtual ResultExecutedContext ResultExecutedContext { get; set; }
    }
}
